home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 43
/
Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso
/
Aminet
/
game
/
think
/
Connect4.lha
/
Connect4
/
source
/
gameboardclass.h
< prev
next >
Wrap
C/C++ Source or Header
|
2001-04-06
|
3KB
|
110 lines
#ifndef GAMEBOARDCLASS_H
#define GAMEBOARDCLASS_H
#include "graphics_support.h"
#include <intuition/classes.h>
#include <utility/tagitem.h>
#include <clib/utility_protos.h>
#include <libraries/mui.h>
enum {red_player, yellow_player};
enum
{
MUIA_Gameboard_CurrentPlayer=TAG_USER, MUIA_Gameboard_Inputactive,
MUIA_Gameboard_Winner, MUIA_Gameboard_Restart, MUIA_Gameboard_Tiegame,
MUIA_Gameboard_RedPlayer, MUIA_Gameboard_YellowPlayer,
MUIA_Gameboard_RedDetail, MUIA_Gameboard_YellowDetail,
MUIM_Gameboard_BeginGame, MUIM_Gameboard_MakeMove
};
/* capabilites [ISG]
**
** MUIA_Gameboard_CurrentPlayer [.SG]
** MUIA_Gameboard_Inputactive [.S.]
** MUIA_Gameboard_Winner [.S.]
** MUIA_Gameboard_Restart [.S.]
** MUIA_Gameboard_Tiegame [.S.]
** MUIA_Gameboard_RedPlayer [.SG]
** MUIA_Gameboard_YellowPlayer [.SG]
** MUIA_Gameboard_RedDetail [.SG]
** MUIA_Gameboard_YellowDetail [.SG]
**
** // Methods
** MUIM_Gameboard_MakeMove
**
*/
#define PlayerType_Local (1<<1)
#define PlayerType_Computer (1<<2)
#define PlayerType_Remote (1<<3)
struct player
{
ULONG type;
ULONG data; // type dependant contents - see below
};
/*
PlayerType_Local: player.data is unused
PlayerType_Computer: player.data contains a number specifies the skill level
of the computer player
PlayerType_Remote: player.data contains a 32 bit IPv4 IP address
*/
#define GAMEBOARD_PENS 512
struct gameboarddata
{
// Red piece
UBYTE *red_body;
ULONG *red_palette;
struct BitMap *red_bitmap;
ULONG red_width, red_height;
ULONG red_depth;
// Yellow piece
UBYTE *yellow_body;
ULONG *yellow_palette;
struct BitMap *yellow_bitmap;
ULONG yellow_width, yellow_height;
ULONG yellow_depth;
// Mask
struct BitMap *mask_bitmap;
// Blank square
ULONG blank_palette[6];
struct BitMap *blank_bitmap;
ULONG blank_width, blank_height;
ULONG blank_depth;
struct pen pens[GAMEBOARD_PENS];
BOOL inputactive;
BOOL restartgameboard;
ULONG current_player; // May be 0 (red) or 1 (yellow)
int counterx, countery; // Exact window co-ordinates to place piece
int column, row; // Column and Row that a piece was placed in
char filled[7][5]; // 2D array records which holes in the board are filled
// NB: -1 denotes an empty hole
char columntop[7]; // stores a number from 0->4 for each column to say which piece is topmost
// NB: -1 denotes a completely empty column i.e. no topmost piece
char winning_player; // May be 0 (red) or 1 (yellow)
BOOL tiegame;
struct player opponent[2];
};
__saveds ULONG gameboardDispatcher (__reg("a0") struct IClass *cl,
__reg("a2") Object *obj,
__reg("a1") Msg msg);
#endif